package com.ys.nms.module.business.dal.dataobject.sensors;

import com.ys.nms.framework.mybatis.core.dataobject.BaseSlaveDO;
import com.ys.nms.framework.tenant.core.aop.TenantIgnore;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.ys.nms.framework.mybatis.core.dataobject.BaseDO;

/**
 * 传感器 DO
 *
 * @author zzy
 */
@TableName("sensors")
@KeySequence("sensors_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TenantIgnore
public class SensorsDO extends BaseSlaveDO {

    /**
     * ID
     */
    @TableId
    private Integer sensorId;
    /**
     * 0未删除1删除
     */
    private Integer sensorDeleted;
    /**
     * 传感器的类别，如 temperature	（温度）、voltage	（电压）、fanspeed	（风扇转速）、current	（电流）等
     */
    private String sensorClass;
    /**
     * 设备ID
     */
    private Integer deviceId;
    /**
     * 数据采集方式，通常为 'snmp'	，也可能支持 'agent'	 或 'ipmi'	 等，表示使用何种协议或代理获取数据。
     */
    private String pollerType;
    /**
     * SNMP OID 字符串，用于 SNMP 查询获取该传感器的原始值。
     */
    private String sensorOid;
    /**
     * SNMP 表中的索引值，用于区分同一类型多个传感器（如多个风扇或温度探头）
     */
    private String sensorIndex;
    /**
     * 传感器的具体型号或类型标识，如 apc-temperature	、cisco-envmon	，用于识别传感器来源或硬件类型。
     */
    private String sensorType;
    /**
     * 传感器的描述信息，通常为用户可读的名称，如 "CPU Temperature" 或 "Fan 1 Speed"。
     */
    private String sensorDescr;
    /**
     * 传感器分组名称，可用于前端界面按组展示（如“电源”、“环境”等）。
     */

    @TableField(value = "`group`")
    private String group;
    /**
     * 除数，用于将原始采集值转换为实际物理值（实际值 = 原始值 × multiplier / divisor	）。常用于单位换算（如 mV 转 V）。
     */
    private Long sensorDivisor;
    /**
     * 乘数，用于将原始采集值转换为实际物理值（实际值 = 原始值 × multiplier / divisor	）。
     */
    private Integer sensorMultiplier;
    /**
     * 当前采集到的传感器数值（已换算），由轮询器更新。
     */
    private Double sensorCurrent;
    /**
     * 传感器的上限阈值
     */
    private Double sensorLimit;
    /**
     * 传感器的上限警告阈值，超过此值触发警告告警。
     */
    private Double sensorLimitWarn;
    /**
     * 传感器的下限阈值
     */
    private Double sensorLimitLow;
    /**
     * 传感器的下限告警阈值，低于此值触发严重告警。
     */
    private Double sensorLimitLowWarn;
    /**
     * 是否启用告警：1	 启用，0	 禁用。
     */
    private Integer sensorAlert;
    /**
     * 是否为用户自定义传感器：Yes	 表示由用户手动添加，No	 表示由系统自动发现。
     */
    private String sensorCustom;
    /**
     * 对应于 SNMP 的 ENTITY-MIB	 中的 entPhysicalIndex	，用于定位硬件实体
     */
    @TableField(value = "entPhysicalIndex")
    private String entPhysicalIndex;
    /**
     * 指明该传感器测量的是哪个硬件实体（如 temperature	, power	 等），用于关联物理组件。
     */
    @TableField(value = "entPhysicalIndex_measured")
    private String entphysicalindexMeasured;
    /**
     * 最后一次更新时间，每次数据更新时自动刷新为当前时间戳。
     */
    @TableField(value = "lastupdate")
    private LocalDateTime lastupdate;
    /**
     * 上一次采集的传感器值，用于计算变化率或检测突变
     */
    private Double sensorPrev;
    /**
     * 用户自定义处理函数名称（PHP 函数），用于对原始值进行特殊处理。
     */
    private String userFunc;
    /**
     * rrd_type
     */
    private String rrdType;


}
